/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */
#pragma once

#include "Node.h"
#include "Factory.h"
#include <CompilerFeatures.h>

namespace liba
{
class Resource;
class Atom;

namespace lib3d
{
namespace hard { class Hardware; }
namespace node
{

class Billboard : public Node
{
	NODE_DEFINITION(Billboard)
public:
	static const Atom node_name;

	Billboard( const Atom & name, Node * parent );
	virtual ~Billboard();

	virtual Billboard * Clone() LIBA_OVERRIDE;

	// Attributes...
	static const Atom restricted_name;

	virtual void RenderToList( hard::Hardware * hardware, hard::RenderList * render_list ) LIBA_OVERRIDE;
protected:
	/** if true, restricts billboard rotation to to Z axis only.*/
	properties::DependencyProperty<bool> restricted;
	virtual bool on_attribute( xml::Provider * prov, const std::string & name, const std::string & value ) LIBA_OVERRIDE;
};

} // namespace node
} // namespace lib3d
} // namespace liba
using namespace liba;

